#ifndef ELEMENT_H
#define ELEMENT_H
#include <vector>
#include <string>

struct Point
{
	double x, y;
	void operator = (const Point &rhs)
	{
		x = rhs.x;
		y = rhs.y;
		//return *this;
	}
	Point()
	{
		x = 0;
		y = 0;
	}
	Point(double x, double y)
	{
		this->x = x;
		this->y = y;
	}
};

class Element
{
public:
	Element(std::string name):mName(name){}

	enum{NONE = 0, MODULE, PATH};
	void setName(std::string &name) {mName = name;}
	std::string getName() const {return mName;}
	virtual void setVertexs(std::vector<Point> &vertex) = 0;
	virtual void getVertexs(std::vector<Point> &vertexs, double buffer = 0) const = 0;
	virtual int getType() const {return NONE;}
private:
	std::string mName;
};
#endif
